package cn.edu.wynu.d4_jdk8_time;
/*
LocalDate:代表本地日期(年、月、日、星期)
LocalTime:代表本地时间(时、分、秒、纳秒)
LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)

它们获取对象的方案
                方法名                                             示例
                                                     LocaDate ld=LocalDate.now();
public static Xxxx now();获取系统当前时间对应的该对象   LocalTime lt = LocalTime.now();
                                                     LocalDateTime ldt= LocalDateTime.now();

                                                     LocalDate localDate1=LocalDate.of(2099,11,11);
public Static Xxxx of(...): 获取指定时间的对象         LocalTime localTime1=LocalTime.of(9,8,59);
                                                     LocalDateTime localDateTime1 =LocalDateTime.of(2025,11,16,14, 30, 01);
*/

/*
LocalDate的常用API(都是处理年、月、日、星期相关的)
        方法名                                 说明
public int geYear()                 获取年
public int getMonthValue()          获取月份(1-12)
public int getDayOfMonth()          获取日
public int getDayOfYear()           获取当前是一年中的第几天
Public DayOfWeek getDayOfWeek()     获取星期几:ld.getDay0fWeek().getValue()

                方法名                                         说明
withYear、withMonth、withDayOfMonth、withDayOfYear 直接修改某个信息，返回新日期对象
plusYears、plusMonths、plusDays、plusWeeks         把某个信息加多少，返回新日期对象
minusYears、minusMonths、minusDays，minusWeeks     把某个信息减多少，返回新日期对象
equals isBefore isAfter                            判断两个日期对象，是否相等，在前还是在后

*/

import java.time.LocalDate;

public class Test1_LocalDate {
    public static void main(String[] args) {
        // 0、获取本地日期对象（不可变对象）
        LocalDate ld = LocalDate.now(); // 年 月 日
        System.out.println(ld);

        // 1、获取日期对象中的信息
        int year = ld.getYear(); // 年
        int month = ld.getMonthValue(); // 月(1-12)
        int day = ld.getDayOfMonth(); // 日
        int dayOfYear = ld.getDayOfYear(); // 一年中的第几天
        int dayOfWeek = ld.getDayOfWeek().getValue(); // 星期几
        System.out.println(year);
        System.out.println(day);
        System.out.println(dayOfWeek);

        // 2、直接修改某个信息:withYear、withMonth、withDayOfMonth、withDayOfYear
        LocalDate ld2 = ld.withYear(2035); // 更改年份
        LocalDate ld3 = ld.withMonth(12); // 更改月份
        System.out.println(ld2);
        System.out.println(ld3);
        System.out.println(ld);

        // 3、把某个信息加多少:plusYears、plusMonths、plusDays、plusWeeks
        LocalDate ld4 = ld.plusYears(2);
        LocalDate ld5 = ld.plusMonths(2);

        // 4、把某个信息减多少:minusYears、minusMonths、minusDays、minusWeeks
        LocalDate ld6 = ld.minusYears(2);
        LocalDate ld7 = ld.minusMonths(2);

        // 5、获取指定月期的LocalDate对象:public static LocalDate of(int year, int month, int dayOfMonth)
        LocalDate ld8 = LocalDate.of(2035, 12, 24);
        LocalDate ld9 = LocalDate.of(2035, 12, 24);

        // 6、判断2个日期对象，是否相等，在前还是在后:equals isBefore isAfter
        System.out.println(ld8.equals(ld9)); // 判断是否相等
        System.out.println(ld8.isAfter(ld9));
        System.out.println(ld8.isBefore(ld9));

    }
}
